# 将配置统一封装到Config类中 方便统一管理
import logging
from datetime import timedelta

from redis import Redis


class Config:
    DEBUG = True  # 开启调试模式
    # 数据库连接地址
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/info23"
    # 设置是否追踪数据库变化
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    REDIS_HOST = "127.0.0.1"  # redis绑定ip 可以自定义key封装到Config类中
    REDIS_PORT = 6379  # redis监听端口
    SESSION_TYPE = "redis"  # 设置session的存储方式
    SESSION_REDIS = Redis(host=REDIS_HOST, port=REDIS_PORT)  # 创建redis操作对象
    SESSION_USE_SIGNER = True  # 设置session是否加密
    SECRET_KEY = "nTIQJ9Id06nDqdxYs+SZOtBGeTlInd3JkZBvkjflkQs0csN1gQBc4d8jt1lBR4RP"  # 设置session应用秘钥，对session进行加密
    PERMANENT_SESSION_LIFETIME = timedelta(days=7)  # 设置session 过期时间
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True  # 设置数据库自动提交（请求结束，自动提交）


# 不同的代码环境应该使用不同配置信息（配置子类化）
class DevelopmentConfig(Config):  # 调试环境
    DEBUG = True
    LOG_LEVEL = logging.DEBUG  # Ctrl + 鼠标左键进入内部查看错误等级


class ProductionConfig(Config):  # 生产模式
    DEBUG = False
    LOG_LEVEL = logging.ERROR

# 记录配置类型和配置子类之间的关系

config_dict = {
    "dev": DevelopmentConfig,
    "pro": ProductionConfig
}
